#include <stdio.h>
#include <stdlib.h>
//最大子列和问题

int maxSubArray(int* arr,int len);


int main(){
    int N=0;
    scanf("%d",&N);
    int i;
    int arr[N];
    for (i = 0; i < N; i++) {
        scanf("%d",&arr[i]);
    }
    printf("%d",maxSubArray(arr,N));
    return 0;
}

//暴力求解
int maxSubArray(int* arr,int len){
    int max=0;
    int i;
    int sum = 0;
    for (i = 0; i < len; i++) {
        int j;
        sum=arr[i];
        for (j = i+1; j < len; j++) {
            sum += arr[j];
            if(sum >= max){
                max = sum;
            }
        }
    }
    return max;
}

int maxSubArray2(int* arr,int len){
    int ThisSum, MaxSum, i;
    ThisSum = MaxSum = 0;
    for( i = 0; i < len; i++ ) {
        ThisSum += arr[i]; /* 向右累加 */
        if( ThisSum > MaxSum ){
            MaxSum = ThisSum; /* ·发现更大和则更新当前结果 */
        } else if( ThisSum < 0 ) {
            /* 如果当前子列和为负数 */
            ThisSum = 0; /* 则不可能使后面的部分和增大，抛弃之 */
        }
    }
    return MaxSum;
}